package cn.csg.ams.collect2.poptopics.dao;

import cn.csg.ams.collect2.poptopics.entity.RecordInfo;
import cn.csg.ams.collect2.poptopics.entity.bo.MkMcTermAlarmLogBO;
import com.baomidou.mybatisplus.core.mapper.BaseMapper;
import org.apache.ibatis.annotations.Mapper;
import org.apache.ibatis.annotations.Param;
import org.springframework.stereotype.Component;

import java.util.List;
import java.util.Map;

/**
 * @author: zhanggang
 * @ClassName: MkMcTermAlarmLogDao
 * @date: 2023-11-15 16:31:54
 * @Description: 停复电告警数据消费日志(mk_mc_term_alarm_log)表数据库访问层
 */
@Mapper
public interface MkMcTermAlarmLogDao extends BaseMapper<MkMcTermAlarmLogBO> {

    /**
     * 插入清洗前的日志
     *
     * @param fields value
     */
    void insertMkMcTermAlarmLogPre(@Param("fields") List<Object> fields);

    /**
     * @Title:insertMkMcTermAlarmLog
     * @Description:新增数据
     * @date: 2023-11-15 16:31:54
     * @params: mkMcTermAlarmLogVo 实例对象
     * @return：int 影响行数
     * @throw：
     */
    int insertMkMcTermAlarmLog(@Param("fields") List<Object> fields);


    /**
     * 根据运行电表标识查询档案信息
     *
     * @param runMeterId 运行电能表标识
     * @return RecordInfo
     */
    RecordInfo getRecordInfo(@Param("runMeterId") String runMeterId, @Param("areaCode") String areaCode);

    /**
     * 根据运行终端标识查询档案信息
     *
     * @param runTermId 运行电能表标识
     * @return RecordInfo
     */
    RecordInfo getRecordInfoByTerm(@Param("runTermId") String runTermId, @Param("areaCode") String areaCode);


    /**
     * 查询台区下是否存在超级电容表
     */
    Integer taSuperCapacityFlag(String taNo);


    /**
     * 查询运行电能表所属分支
     *
     * @param runMeterId 运行电能表标识
     * @return String
     */
    String getBranchByRunMeterId(@Param("runMeterId") String runMeterId);


    /**
     * 查询公变台区对应的运行电能表标识
     *
     * @param taNo     台区编号
     * @param userType 用户类别-公变台区
     * @return 公变台区对应的运行电能表标识
     */
    String getTaRunMeterId(@Param("taNo") String taNo, @Param("userType") String userType);


    /**
     * 查询线路对应的运行电能表标识
     *
     * @param lineNo   线路编号
     * @param userType 用户类别-线路
     * @return 公变台区对应的运行电能表标识
     */
    String getLineRunMeterId(@Param("lineNo") String lineNo, @Param("userType") String userType);


    /**
     * 查询公变台区下的配置终端标识与电表标识
     *
     * @param taNo 台区编号
     * @return Map<String, String>
     */
    Map<String, String> getPbTermAndMeterByTaNo(@Param("taNo") String taNo, @Param("taType") String taType);


    /**
     * 查询台区下的5个低压用户
     *
     * @param taNo 台区编号
     * @return List<Map < String, Object>>
     */
    List<Map<String, Object>> get5UserByTaNo(@Param("taNo") String taNo, @Param("areaCode") String areaCode);


    /**
     * 查询线路考核表骤降线路
     *
     * @param dataPart 日期分区
     * @return List<Map < String, Object>>
     */
    List<Map<String, Object>> curDipLine(@Param("dataPart") int dataPart);


    /**
     * 关联了计划与故障工单，且还在停电，但工单已经复电的台区与复电时间
     */
    List<Map<String, Object>> getWorkOrderRecoverTime();
}
